package com.sofwin.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sofwin.mapper.SysDeptMapper;
import com.sofwin.pojo.SysDept;
import com.sofwin.pojo.SysDeptExample;
import com.sofwin.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class DeptServiceImpl implements DeptService {

    @Autowired
    private SysDeptMapper mapper;

    /**
     * @Description:  根据id查询部门信息
     * @Param: * @param id:  需要查询的部门id
     * @return: * @return: com.sofwin.pojo.SysDept 查询到的部门信息封装
     * @Author: Mr.Xq
     * @Date: 2021/4/18 0018
     */
    /** @Author abiao
    * @Description  查询部门信息(用于User)
    * @Date 2021/4/17 下午 5:24
    * @param
    * @return list 部门集合
    */
    @Override
    public SysDept selectById(Integer id) {
        return mapper.selectByPrimaryKey(id);
    }

    /**
     * @Description:  新增或修改部门信息
     * @Param: * @param dept:  需要修改的部门信息封装
     * @return: * @return: boolean 操作是否成功
     * @Author: Mr.Xq
     * @Date: 2021/4/18 0018
     */
    @Override
    public boolean saveDept(SysDept dept) {
        if(dept.getId()!=null&&dept.getId()!=0){
            return mapper.updateByPrimaryKeySelective(dept)==1;
        }
        return mapper.insertSelective(dept)==1;
    }

    /**
     * @Description:  根据id删除对应的部门信息，如果该部门为父级部门，同时删除对应的所有子级部门
     * @Param: * @param id:  要删除的部门id
     * @return: * @return: boolean 操作是否成功
     * @Author: Mr.Xq
     * @Date: 2021/4/18 0018
     */
    @Override
    public boolean deleteDepts(Integer id) {
        int flag = 0;
        flag += mapper.deleteByPrimaryKey(id);
        SysDeptExample example = new SysDeptExample();
        SysDeptExample.Criteria criteria = example.createCriteria();
        criteria.andParentIdEqualTo(id);
        List<SysDept> sysDepts = mapper.selectByExample(example);
        if(sysDepts.size()>0){
            flag += mapper.deleteByExample(example);
        }
        return flag==sysDepts.size()+1;
    }

    /**
     * @Description:  查询所有部门信息
     * @Param:
     * @return: * @return: java.util.List<com.sofwin.pojo.SysDept>
     * @Author: Mr.Xq
     * @Date: 2021/4/18 0018
     */
    @Override
    public List<SysDept> selectAllDepts() {
        return mapper.selectByExample(null);
    }
}
